//封装性的意义在于，函数和数据是绑在一起的，数据和数据是绑在一起的。这样，
//我们就可以通过简单的一个结构指针访问到所有的数据，遍历所有的函数
//就像一个c++类A，A->成员(变量或者函数)，A.成员（变量或者函数）就可以获取该类或者模块的所有对外的接口，这就是封装性

#include <stdio.h>
#include <stdlib.h>
typedef struct{
    void (*begin)();
    void (*end)();
    int (*peek)();
    int (*read)(void);
    void (*flash)();
    int (*avaiiable)();
    void (*checkRx)();
    int count;
}Serial;


int Serial_Read(void){

    printf("hello word\n");
}

int Serial_Flash(void){

    printf("Serial_Flash\n");
}
int Serial_Begin(void){

    printf("Serial_Begin\n");
}
int Serial_End(void){

    printf("Serial_End\n");
}
int Serial_Peek(){

    printf("Serial_Peek\n");
}

int Serial_Check(void){

    printf("Serial_Check\n");
}

int Serial_Avi(void){

    printf("Serial_Avi\n");
}

Serial serial;
Serial_Init(){
    printf("初始化");
    serial.read=&Serial_Read;
    serial.count=1;
    serial.avaiiable=&Serial_Avi;
    serial.checkRx=&Serial_Check;
    serial.flash=&Serial_Flash;
    serial.begin=&Serial_Begin;
    serial.end=&Serial_End;
    serial.peek=&Serial_Peek;

}


int main(void){

    Serial_Init();
    serial.checkRx();
    serial.flash();
    serial.begin();
    serial.end();

}


